package com.example.vote.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Future;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 投票系统-题目表-2
 * </p>
 *
 * @author 廖老师
 * @since 2023-12-04
 */
@TableName("tp_vote")
@Data
public class TpVote implements Serializable {

    //MyBatisPlus 默认所有的实体属性都映射为表字段
    @TableField(exist = false)  // 排除该属性字段映射
    private List<TpItems> items;

    // 投票的用户数量
    @TableField(exist = false)
    private int userCnt;

    private static final long serialVersionUID = 1L;

    /**
     * 编号, 自增列
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 标题
     */
    @NotBlank(message = "请输入标题")
    @Length(min = 4, message = "标题不能少于4个字")
    private String vname;

    /**
     * 类型: 单选, 多选
     */
    @NotBlank(message = "请选择类型")
    @Pattern(regexp = "单选|多选", message = "请选择单选或多选")
    private String vtype;

    /**
     * 开始时间: 开始投票的时间
     */
    @NotNull
    @Future(message = "开始时间必须是未来的某个时间")
    private LocalDateTime startDate;

    /**
     * 结束时间: 投票结束的时间
     */
    @NotNull
    @Future(message = "结束时间必须是未来的某个时间")
    private LocalDateTime endDate;

    @TableField(exist = false)
    int zan;

}
